#pragma once

#include "log.h"
#include <map>
#include <set>
#include <list>
#include <stack>
#include <vector>
#include <string>
#include <format>
#include <regex>
using std::string;

#define OUT 

#define STR_UNKNOWN "Unknown"

#define TOKEN_LOCATION(tok) ( (tok) == NULL ? STR_UNKNOWN : (tok)->DebugLocation(mTokenizer, true, true) )
#define TOKEN_LOCATION_FILE(tok) ( (tok) == NULL ? STR_UNKNOWN : (tok)->DebugLocation(mTokenizer, false, false) )

namespace XUtils
{
	std::vector<std::string> split(const std::string& str, const std::string& sep = " ");
	std::string ToString(const std::set<std::string>& setStr);
	std::string ToString(const std::vector<std::string>& lstStr, bool format);
	std::list<std::string> ToList(const string& str);

	bool IsFile_H(const string& filename);
	void WriteLine(const string& filename, const string& content);

	string ToLower(const string& content);
	void SetVsProjectPrefix(const string& path);
	string RemoveVsProjectPrefix(const string& path);

}